import request from "@/utils/request";

const USERS_BASE_URL = "/api/v1/users";

const UsersAPI = {
  /** 获取服装厂用户分页数据 */
  getPage(queryParams?: UsersPageQuery) {
    return request<any, PageResult<UsersPageVO[]>>({
      url: `${USERS_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  /**
   * 获取服装厂用户表单数据
   *
   * @param id 服装厂用户ID
   * @returns 服装厂用户表单数据
   */
  getFormData(id: number) {
    return request<any, UsersForm>({
      url: `${USERS_BASE_URL}/${id}/form`,
      method: "get",
    });
  },

  /**
   *  添加服装厂用户
   *
   *  @param data 服装厂用户表单数据
   */
  add(data: UsersForm) {
    return request({
      url: `${USERS_BASE_URL}`,
      method: "post",
      data,
    });
  },

  /**
   * 更新服装厂用户
   *
   * @param id 服装厂用户ID
   * @param data 服装厂用户表单数据
   */
  update(id: number, data: UsersForm) {
    return request({
      url: `${USERS_BASE_URL}/${id}`,
      method: "put",
      data,
    });
  },

  /**
   * 批量删除服装厂用户，多个以英文逗号(,)分割
   *
   * @param ids 服装厂用户ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${USERS_BASE_URL}/${ids}`,
      method: "delete",
    });
  },
};

export default UsersAPI;

/** 服装厂用户分页查询参数 */
export interface UsersPageQuery extends PageQuery {}

/** 服装厂用户表单对象 */
export interface UsersForm {
  userId?: number;
  /** 所属服装厂ID，关联到工厂表 */
  factoryId?: number;
  /** 用户名，用于登录 */
  username?: string;
  /** 加密后的密码 */
  passwordHash?: string;
  /** 真实姓名 */
  realName?: string;
  /** 联系电话 */
  phone?: string;
  /** 电子邮箱 */
  email?: string;
  /** 用户角色：worker-普通员工, supervisor-组长/主管, manager-厂长, admin-系统管理员 */
  role?: string;
  /** 所属部门，如裁剪部、缝制部、包装部等 */
  department?: string;
  /** 职位 */
  position?: string;
  /** 入职日期 */
  hireDate?: Date;
  /** 账号状态：0-禁用，1-启用 */
  status?: number;
  /** 登录时ip所在地 */
  loginIpAddress?: string;
  /** 登录时ip  */
  loginIp?: string;
  /** 最后登录时间 */
  lastLogin?: Date;
  /** 创建时间 */
  createdAt?: Date;
  /** 更新时间 */
  updatedAt?: Date;
  /** 创建人ID */
  createdBy?: number;
  /** 备注信息 */
  notes?: string;
}

/** 服装厂用户分页对象 */
export interface UsersPageVO {
  userId?: number;
  /** 所属服装厂ID，关联到工厂表 */
  factoryId?: number;
  /** 用户名，用于登录 */
  username?: string;
  /** 加密后的密码 */
  passwordHash?: string;
  /** 真实姓名 */
  realName?: string;
  /** 联系电话 */
  phone?: string;
  /** 电子邮箱 */
  email?: string;
  /** 用户角色：worker-普通员工, supervisor-组长/主管, manager-厂长, admin-系统管理员 */
  role?: string;
  /** 所属部门，如裁剪部、缝制部、包装部等 */
  department?: string;
  /** 职位 */
  position?: string;
  /** 入职日期 */
  hireDate?: Date;
  /** 账号状态：0-禁用，1-启用 */
  status?: number;
  /** 登录时ip所在地 */
  loginIpAddress?: string;
  /** 登录时ip  */
  loginIp?: string;
  /** 最后登录时间 */
  lastLogin?: Date;
  /** 创建时间 */
  createdAt?: Date;
  /** 更新时间 */
  updatedAt?: Date;
  /** 创建人ID */
  createdBy?: number;
  /** 备注信息 */
  notes?: string;
}
